Store message format as enum in BuildConfig
authorDirkjan Ochtman <dirkjan@ochtman.nl>
Sat, 14 Apr 2018 08:27:33 +0000 (10:27 +0200)
committerDirkjan Ochtman <dirkjan@ochtman.nl>
Thu, 3 May 2018 19:54:48 +0000 (21:54 +0200)
src/bin/cargo/command_prelude.rs
src/cargo/core/compiler/custom_build.rs
src/cargo/core/compiler/mod.rs
src/cargo/ops/cargo_compile.rs
src/cargo/ops/cargo_package.rs
src/cargo/ops/mod.rs

index 2f6a046243074e720376b9b318a3a0e0858e8ef6..8157dcdb4ee730e12c2bde56a4dc2ddf17884062 100644 (file)
@@ -4,8 +4,8 @@ use std::fs;
 use clap::{self, SubCommand};
 use cargo::CargoResult;
 use cargo::core::Workspace;
-use cargo::ops::{CompileFilter, CompileMode, CompileOptions, MessageFormat, NewOptions, Packages,
-                 VersionControl};
+use cargo::core::compiler::MessageFormat;
+use cargo::ops::{CompileFilter, CompileMode, CompileOptions, NewOptions, Packages, VersionControl};
 use cargo::util::paths;
 use cargo::util::important_paths::find_root_manifest_for_wd;
 
index b23b1256d66f010f14ca688653cc700404cffeb1..78dfe759b5d84836a9ac0c227f576a22df2c6711 100644 (file)
@@ -231,7 +231,7 @@ fn build_work<'a, 'cfg>(cx: &mut Context<'a, 'cfg>, unit: &Unit<'a>) -> CargoRes
     );
     let build_scripts = super::load_build_deps(cx, unit);
     let kind = unit.kind;
-    let json_messages = bcx.build_config.json_messages;
+    let json_messages = bcx.build_config.json_messages();
 
     // Check to see if the build script has already run, and if it has keep
     // track of whether it has told us about some explicit dependencies
index 4e87f66c6f4937aff22d19b2fd96956947030ffa..82cbbc43de440178fee33118dfd50c24fe222b0e 100644 (file)
@@ -64,7 +64,7 @@ pub struct BuildConfig {
     /// Whether we are running tests
     pub test: bool,
     /// Whether to print std output in json format (for machine reading)
-    pub json_messages: bool,
+    pub message_format: MessageFormat,
 }
 
 impl BuildConfig {
@@ -132,7 +132,7 @@ impl BuildConfig {
             target: target_config,
             release: false,
             test: false,
-            json_messages: false,
+            message_format: MessageFormat::Human,
         })
     }
 
@@ -152,6 +152,16 @@ impl BuildConfig {
             .map(|s| s.as_str())
             .unwrap_or(self.host_triple())
     }
+
+    pub fn json_messages(&self) -> bool {
+        self.message_format == MessageFormat::Json
+    }
+}
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+pub enum MessageFormat {
+    Human,
+    Json,
 }
 
 /// Information required to build for a target
@@ -382,7 +392,7 @@ fn rustc<'a, 'cfg>(
     let dep_info_loc = fingerprint::dep_info_loc(&mut cx, unit);
 
     rustc.args(&cx.bcx.rustflags_args(unit)?);
-    let json_messages = cx.bcx.build_config.json_messages;
+    let json_messages = cx.bcx.build_config.json_messages();
     let package_id = unit.pkg.package_id().clone();
     let target = unit.target.clone();
 
@@ -569,7 +579,7 @@ fn link_targets<'a, 'cfg>(
         .into_iter()
         .map(|s| s.to_owned())
         .collect();
-    let json_messages = bcx.build_config.json_messages;
+    let json_messages = bcx.build_config.json_messages();
 
     Ok(Work::new(move |_| {
         // If we're a "root crate", e.g. the target of this compilation, then we
@@ -876,7 +886,7 @@ fn build_base_args<'a, 'cfg>(
         ColorChoice::CargoAuto => {}
     }
 
-    if bcx.build_config.json_messages {
+    if bcx.build_config.json_messages() {
         cmd.arg("--error-format").arg("json");
     }
 
index c13ad0a355104474a6ebd86eaa4db33d4328d38f..87c37b0febce66dbb37b6bbcb64cd9f8e0131ac4 100644 (file)
@@ -27,7 +27,7 @@ use std::path::{Path, PathBuf};
 use std::sync::Arc;
 
 use core::compiler::{BuildConfig, BuildContext, Compilation, Context, DefaultExecutor, Executor};
-use core::compiler::{Kind, Unit};
+use core::compiler::{Kind, MessageFormat, Unit};
 use core::profiles::{ProfileFor, Profiles};
 use core::resolver::{Method, Resolve};
 use core::{Package, Source, Target};
@@ -181,12 +181,6 @@ impl CompileMode {
     }
 }
 
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub enum MessageFormat {
-    Human,
-    Json,
-}
-
 #[derive(Clone, PartialEq, Eq, Debug)]
 pub enum Packages {
     Default,
@@ -341,7 +335,7 @@ pub fn compile_ws<'a>(
     let mut build_config = BuildConfig::new(config, jobs, &target, Some(rustc_info_cache))?;
     build_config.release = release;
     build_config.test = mode == CompileMode::Test || mode == CompileMode::Bench;
-    build_config.json_messages = message_format == MessageFormat::Json;
+    build_config.message_format = message_format;
     let default_arch_kind = if build_config.requested_target.is_some() {
         Kind::Target
     } else {
index 19774f5e35665cfaedcf77fd4c38c31fdbf10ef1..1cb3f24fbef7480787ffe2c0c025054f1faa7816 100644 (file)
@@ -10,7 +10,7 @@ use git2;
 use tar::{Archive, Builder, EntryType, Header};
 
 use core::{Package, Source, SourceId, Workspace};
-use core::compiler::DefaultExecutor;
+use core::compiler::{DefaultExecutor, MessageFormat};
 use sources::PathSource;
 use util::{self, internal, Config, FileLock};
 use util::paths;
@@ -347,7 +347,7 @@ fn run_verify(ws: &Workspace, tar: &FileLock, opts: &PackageOpts) -> CargoResult
                 required_features_filterable: true,
             },
             release: false,
-            message_format: ops::MessageFormat::Human,
+            message_format: MessageFormat::Human,
             mode: ops::CompileMode::Build,
             target_rustdoc_args: None,
             target_rustc_args: None,
index c72d03a89e30af1523da642e048ddaff39efe5bf..08e65ba54898c2ed5ac93d6d84d7a8c40f49afa3 100644 (file)
@@ -1,6 +1,6 @@
 pub use self::cargo_clean::{clean, CleanOptions};
 pub use self::cargo_compile::{compile, compile_with_exec, compile_ws, CompileOptions};
-pub use self::cargo_compile::{CompileFilter, CompileMode, FilterRule, MessageFormat, Packages};
+pub use self::cargo_compile::{CompileFilter, CompileMode, FilterRule, Packages};
 pub use self::cargo_read_manifest::{read_package, read_packages};
 pub use self::cargo_run::run;
 pub use self::cargo_install::{install, install_list, uninstall};